﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Linq;

namespace ArmoryBrowser.Entities
{
    public class ItemsCollection : List<Item>
    {
        public ItemsCollection() : base() { }
        public ItemsCollection(IEnumerable<Item> collection) : base(collection) { }
        public Item Head
        {
            get
            {
                return GetItemBySlot(0);
            }
        }

        public Item Neck
        {
            get
            {
                return GetItemBySlot(1);
            }
        }

        public Item Shoulders
        {
            get
            {
                return GetItemBySlot(2);
            }
        }

        public Item Shirt
        {
            get
            {
                return GetItemBySlot(3);
            }
        }

        public Item Back
        {
            get
            {
                return GetItemBySlot(14);
            }
        }

        public Item Chest
        {
            get
            {
                return GetItemBySlot(4);
            }
        }

        public Item Tabard
        {
            get
            {
                return GetItemBySlot(18);
            }
        }

        public Item Wrists
        {
            get
            {
                return GetItemBySlot(8);
            }
        }

        public Item Hands
        {
            get
            {
                return GetItemBySlot(9);
            }
        }

        public Item Waist
        {
            get
            {
                return GetItemBySlot(5);
            }
        }

        public Item Legs
        {
            get
            {
                return GetItemBySlot(6);
            }
        }

        public Item Feet
        {
            get
            {
                return GetItemBySlot(7);
            }
        }

        public Item Ring1
        {
            get
            {
                return GetItemBySlot(10);
            }
        }

        public Item Ring2
        {
            get
            {
                return GetItemBySlot(11);
            }
        }

        public Item Trinket1
        {
            get
            {
                return GetItemBySlot(12);
            }
        }

        public Item Trinket2
        {
            get
            {
                return GetItemBySlot(13);
            }
        }

        public Item MainHand
        {
            get
            {
                return GetItemBySlot(15);
            }
        }

        public Item OffHand
        {
            get
            {
                return GetItemBySlot(16);
            }
        }

        public Item Ranged
        {
            get
            {
                return GetItemBySlot(17);
            }
        }

        private Item GetItemBySlot(Int32 slot)
        {
            return this.Where(i => i.Slot == slot.ToString()).SingleOrDefault();
        }
    }
}
